#ifndef _CUSTOM_MOVEPATTERNS_H_
#define _CUSTOM_MOVEPATTERNS_H_

#include <dispatch_system/moying_map.h>

namespace moying
{
namespace navigation
{
    class CustomMovePatterns
    {
        public:
            CustomMovePatterns(MoyingMap* moyingmap);
            virtual ~CustomMovePatterns();

            bool load(const std::string &file);
            bool hasCustomMove(int x, int y, int th, MovePatternState sm);
            bool addCustomMove(int x, int y, int th, MovePatternState sm, MovePatternsPtr &custom_moves);
            MovePatternsPtr getCustomMove(int x, int y, int th, MovePatternState sm,int search_theta_num=8);
        private:
            MoyingMap* moyingmap_ = nullptr;
            std::vector<std::vector<std::vector<std::map<MovePatternState, MovePatternsPtr>>>> move_patterns_on_map_;
    };

    // typedef std::shared_ptr<CustomMovePatterns> CustomMovePatternsPtr;
}
}
#endif // _CUSTOM_MOVEPATTERNS_H_